# -------------------------------------------------------------------
#       -*- coding: utf-8 -*-
#   @Project    :   spider
#   @File       :   45_1_协程.py
#   @Author     :   WANGYU
#   @Time       :   2021-09-03 20:34:11
#   @Software   :   PyCharm
#   @Desc       :   
# -------------------------------------------------------------------


import time


def func():
    print('i love China')
    time.sleep(3)  # 让当前的线程处于阻塞状态，CPU是不为我工作的
    print('i really love China')


if __name__ == '__main__':
    func()

# input（）程序也是处于阻塞状态的
# requests.get()在网络请求返回数据之前，程序也是处于阻塞状态的
# 一般情况下，当程序处于IO操作的时候，线程都会处于阻塞状态

# 协程：当程序遇见了IO操作都时候，可以选择性的切换到其他任务上
# 在微观上是一个任务一个任务的切换，切换条件一般就是IO操作
# 在宏观上，我们能看到的其实是多个任务一起在执行
# 多任务异步操作

# 上方所讲的一切，都是在单线程的条件下
